make gdk_screen_get_monitor_at_point cross platform instead of backend
authorErwann Chenede - <erwann.chenede@sun.com>
Thu, 2 May 2002 16:18:24 +0000 (16:18 +0000)
committerErwann Chenede <erwannc@src.gnome.org>
Thu, 2 May 2002 16:18:24 +0000 (16:18 +0000)
2002-05-02 Erwann Chenede - <erwann.chenede@sun.com>

  * gdk/gdkscreen.c (gdk_screen_get_monitor_at_point):
  * gdk/gdkscreen.h :
  * gdk/x11/gdkscreen-x11.c :
  make gdk_screen_get_monitor_at_point cross platform instead
  of backend dependant. #80480
  * tests/testxinerama.c (main):
  changed the warning message.

gdk/gdkscreen.c
gdk/gdkscreen.h
gdk/x11/gdkscreen-x11.c
tests/testxinerama.c

index 25b633ec78f58d54df805a03f36e470da222387d..415ff27229554d467f1a82b53fd7bec9e7dfc842 100644 (file)
@@ -294,9 +294,26 @@ gdk_screen_get_monitor_at_point (GdkScreen *screen,
                                 gint       x,
                                 gint       y)
 {
+  gint num_monitors, i;
+  
   g_return_val_if_fail (GDK_IS_SCREEN (screen), -1);
+
+  num_monitors = gdk_screen_get_n_monitors (screen);
   
-  return GDK_SCREEN_GET_CLASS (screen)->get_monitor_at_point (screen, x,y);
+  for (i=0;i<num_monitors;i++)
+    {
+      GdkRectangle monitor;
+      
+      gdk_screen_get_monitor_geometry (screen, i, &monitor);
+
+      if (x >= monitor.x &&
+          x < monitor.x + monitor.width &&
+          y >= monitor.y &&
+          y < (monitor.y + monitor.height))
+        return i;
+    }
+
+  return -1;
 }
 
 /**
index cd636297b95287649f39d2111f61304ca5356e96..1fd5ffcab31e0f0b9061d5f97a91bdb8bbb87f3a 100644 (file)
@@ -65,9 +65,6 @@ struct _GdkScreenClass
   void          (*get_monitor_geometry)  (GdkScreen    *screen,
                                          gint          monitor_num,
                                          GdkRectangle *dest);
-  gint          (*get_monitor_at_point)  (GdkScreen    *screen,
-                                         gint          x,
-                                         gint          y);
 };
 
 GType        gdk_screen_get_type              (void);
index 6126dc350c690020fcc50d452472cd2a5109f98b..5113986a434ad721dc4316287d464bc3b4487120 100644 (file)
@@ -49,9 +49,6 @@ static gint          gdk_screen_x11_get_n_monitors        (GdkScreen       *scre
 static void          gdk_screen_x11_get_monitor_geometry  (GdkScreen       *screen,
                                                           gint             num_monitor,
                                                           GdkRectangle    *dest);
-static gint          gdk_screen_x11_get_monitor_at_point  (GdkScreen       *screen,
-                                                          gint             x,
-                                                          gint             y);
 
 GType gdk_screen_x11_get_type ();
 static gpointer parent_class = NULL;
@@ -100,7 +97,6 @@ gdk_screen_x11_class_init (GdkScreenX11Class * klass)
   screen_class->get_window_at_pointer = gdk_screen_x11_get_window_at_pointer;
   screen_class->get_n_monitors = gdk_screen_x11_get_n_monitors;
   screen_class->get_monitor_geometry = gdk_screen_x11_get_monitor_geometry;
-  screen_class->get_monitor_at_point = gdk_screen_x11_get_monitor_at_point;
   
   G_OBJECT_CLASS (klass)->finalize = gdk_screen_x11_finalize;
   parent_class = g_type_class_peek_parent (klass);
@@ -259,31 +255,6 @@ gdk_screen_x11_get_monitor_geometry (GdkScreen    *screen,
   *dest = screen_x11->monitors[num_monitor];
 }
 
-static gint 
-gdk_screen_x11_get_monitor_at_point (GdkScreen *screen,
-                                    gint       x,
-                                    gint       y)
-{
-  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
-  int i;
-  GdkRectangle *monitor;
-
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
-
-  for (i = 0, monitor = screen_x11->monitors; 
-       i < screen_x11->num_monitors; 
-       i++, monitor++)
-    {
-      if (x >= monitor->x &&
-         x < monitor->x + monitor->width &&
-         y >= monitor->y &&
-         y < (monitor->y + monitor->height))
-       return i;
-    }
-
-  return -1; 
-}
-
 Screen *
 gdk_x11_screen_get_xscreen (GdkScreen *screen)
 {
index 2f6e05ea23a6bacde136e3153e4a2b834e51d411..e202d5bc6ddd92ce8696113e7af28468c6ef0376 100644 (file)
@@ -42,7 +42,7 @@ main (int argc, char *argv[])
 
   num_monitors = gdk_screen_get_n_monitors (screen);
   if (num_monitors == 1)
-    g_warning ("The current display does not support xinerama.");
+    g_warning ("The default screen of the current display only has one monitor.");
   
   for (i=0; i<num_monitors; i++)
     {